$OpenBSD: patch-lib_MailScanner_GenericSpam_pm,v 1.1.1.1 2008/02/20 03:47:18 todd Exp $
--- lib/MailScanner/GenericSpam.pm.orig	Thu Dec  7 13:12:22 2006
+++ lib/MailScanner/GenericSpam.pm	Thu Dec  7 13:33:07 2006
@@ -101,19 +101,19 @@ sub Checks {
   push(@WholeMessage, "\n");
   $message->{store}->ReadBody(\@WholeMessage, $maxsize);
 
-  my($GenericSpamResult, $GenericSpamReport);
+  my($GenericSpamResult, $GenericSpamReport, @GenericSpamHeaders);
   $GenericSpamResult = 0;
   $GenericSpamReport = "";
-  ($GenericSpamResult, $GenericSpamReport) =
+  ($GenericSpamResult, $GenericSpamReport, @GenericSpamHeaders) =
     GSForkAndTest($message, \@WholeMessage);
-  return ($GenericSpamResult, $GenericSpamReport);
+  return ($GenericSpamResult, $GenericSpamReport, @GenericSpamHeaders);
 }
 
 # Run the generic spam scanner, and capture the 2 lines of output
 sub GSForkAndTest {
   my($Message, $Contents) = @_;
 
-  my($pipe, $gsscore, $gsreport, $queuelength);
+  my($pipe, $gsscore, $gsreport, @gsheaders, $queuelength);
   my $PipeReturn = 0;
 
   $queuelength = MailScanner::Config::Value('gstimeoutlen', $Message);
@@ -129,23 +129,25 @@ sub GSForkAndTest {
     # In the child
     $pipe->writer();
     $pipe->autoflush();
-    my($gsscore, $gsreport);
+    my($gsscore, $gsreport, @gsheaders);
     eval {
       #print STDERR "ClientIP = " . $Message->{clientip} . "\n";
       #print STDERR "From = " . $Message->{from} . "\n";
       #print STDERR "To = " . join(', ', @{$Message->{to}}) . "\n";
       #print STDERR "This is in the caller\n";
 
-      ($gsscore, $gsreport) = MailScanner::CustomConfig::GenericSpamScanner(
-       $Message->{clientip},
-       $Message->{from},
-       $Message->{to},
+      ($gsscore, $gsreport, @gsheaders) = MailScanner::CustomConfig::GenericSpamScanner(
+       $Message,
        $Contents);
     };
     
     $gsscore = $gsscore + 0.0;
     print $pipe "$gsscore\n";
     print $pipe $gsreport . "\n";
+    foreach my $header (@gsheaders) {
+        #print STDERR " to pipe .. <$header> \n";
+	print $pipe $header . "\n";
+    }
     $pipe->close();
     $pipe = undef;
     exit 0;
@@ -157,6 +159,10 @@ sub GSForkAndTest {
     alarm MailScanner::Config::Value('gstimeout');
     $gsscore = <$pipe>;
     $gsreport = <$pipe>;
+    foreach my $h (<$pipe>) {
+	chomp $h;
+	push @gsheaders,$h;
+    }
 
     # Not sure if next 2 lines should be this way round...
     waitpid $pid, 0;
@@ -246,7 +252,7 @@ sub GSForkAndTest {
   #print STDERR "Generic Spam Scanner points = $gsscore\n";
   #print STDERR "Generic Spam Scanner report = $gsreport\n";
 
-  return ($gsscore, $gsreport);
+  return ($gsscore, $gsreport, @gsheaders);
 }
 
 1;
